// pda的特色设置中需要关闭-禁止将扫描按键的键值传递给应用的开关
let mainActivity // 运行时的主要活动activity
let intentFilter // 实例化的意图过滤器
let broadcastReceiver // 广播接收器
let repeatFlag = false

// 初始化定义广播
const init = (onReceiveCallback) => {
  /* #ifdef APP-PLUS */
  // 获取activity
  mainActivity = plus.android.runtimeMainActivity()
  // 导入类
  const IntentFilter = plus.android.importClass('android.content.IntentFilter')
  // 实例化一个意图过滤器
  intentFilter = new IntentFilter()
  // addAction添加动作, com.android.server.scannerservice.broadcast为设备配置的广播名称
  intentFilter.addAction('com.android.server.scannerservice.broadcast')
  // BroadcastReceiver广播接收器接口:implements 实现接口  onReceive实现接口的方法
  broadcastReceiver = plus.android.implements(
    'io.dcloud.feature.internal.reflect.BroadcastReceiver',
    {
      onReceive: function (context, intent) {
        plus.android.importClass(intent)
        // 扫描设置的开发者选项--手持机pda的广播键值scannerdata
        const code = intent.getStringExtra('scannerdata')
        console.log('pda原始扫描数据:', code)
        // 防重复
        if (repeatFlag) return
        repeatFlag = true
        setTimeout(function () {
          repeatFlag = false
        }, 150)
        // 到这里扫描成功,获取结果，可以调用自己的业务逻辑
        onReceiveCallback && onReceiveCallback(code)
      },
    },
  )
  /* #endif */
}

// 开始广播监听扫码
const start = () => {
  /* #ifdef APP-PLUS */
  mainActivity.registerReceiver(broadcastReceiver, intentFilter)
  /* #endif */
}

// 停止广播监听扫码
const stop = () => {
  /* #ifdef APP-PLUS */
  mainActivity.unregisterReceiver(broadcastReceiver)
  /* #endif */
}

// 主动触发扫描
const triggerScan = () => {
  // 获取Android意图类
  const Intent = plus.android.importClass('android.content.Intent')
  // 实例化意图
  const intent = new Intent()
  // 定义意图，由厂商提供(此处设置为东大的：开始扫描广播com.scan.onStartScan，对应的停止扫描广播为com.scan.onEndScan)
  intent.setAction('com.scan.onStartScan')
  // 广播这个意图
  mainActivity.sendBroadcast(intent)
}

export const broadcastScan = {
  init,
  start,
  stop,
  triggerScan,
}

// 引入使用
// 	import { broadcastScan } from './scanCode.js';
